$(document).ready(init);

function init() {
	settings = {
		n0: 0,
		lambda: parseFloat($("#taxa_chegada").val()),
		mu: parseFloat($("#taxa_saida").val()),
		dt_amostragem: 2,
	}
	$(".pessoa").remove();
	$("#evento").html("");
	$("#relogio").html("");
	$("#taxa_chegada").html(settings.lambda);
	$("#taxa_saida").html(settings.mu);

	var simulador = new Simulador(settings);
	simulador.prepare();
	atualiza_fila_eventos(simulador.fila_eventos);

	$("#play").click(function (){ 
		simulador.play = true;
		simulador.pause = false;
		simulador.run();
	});
	$("#pause").click(function (){ 
		simulador.play = true;
		simulador.pause = true;
	});
	$("#passo").click(function (){ 
		simulador.play = false;
		simulador.pause = false;
		simulador.run();
	});
	$("#stop").click(function (){ 
		simulador.play = false;
		simulador.pause = false;
		$("#grafico").html("");
		var media = media_array(simulador.nr_usuarios, simulador.tempo.length);
		historico_nr_usuarios(simulador.tempo, simulador.nr_usuarios, media);
            	$("#estatistica").dialog({
			'title': 'Estatísticas',
			'modal': true,
			'width': 700,
		});

	});
}

function media_array(amostras, n) {
	var soma = 0;	
	for (i=0; i<amostras.length; i++) {
		soma += amostras[i];
	}
	return soma / (n * 1.0);
}

function historico_nr_usuarios(x, y, media) {
	var chart = new Highcharts.Chart({
		chart: {
			renderTo: 'grafico',
			defaultSeriesType: 'column'
		},
		title: {
			text: 'Número de usuários na fila (Média = ' + media + " clientes)"
		},
		legend: {
			enabled: false
		},
		xAxis: {
			categories: x,
			title: {
				text: 'Tempo (minutos)'
			}
		},
		yAxis: {
			min: 0,
			title: {
				text: 'Números de usuários na fila'
			}
		},
		tooltip: {
			formatter: function() {
				return ''+this.y +' usuários';
			}
		},
		plotOptions: {
			column: {
				dataLabels : {
					enabled: true
				}
			},
			
			
		},
		series: [{
			data: y
		}]
  });
}



function add_pessoa_na_fila(nome) {
	$("#entrada").append('<div id="pessoa'+nome+'" class="pessoa">'+nome+'</div>');
	var box = '#pessoa'+nome;
	move(box).add('margin-left', 400).end(function() {
		$('#pessoa'+nome).remove();
		$("#atendente").remove();
		$("#fila_espera").append('<div id="pessoa'+nome+'" class="pessoa">'+nome+'</div>');
	});
}
function del_pessoa_na_fila(nome) {
	$('#pessoa'+nome).addClass('pessoa_saindo');
	$('#pessoa'+nome).removeClass('pessoa');
	$('#pessoa'+nome).html('');
	setTimeout(function () {
		$('#pessoa'+nome).remove();
		if ($('.pessoa').length == 0) {
			$("#fila_espera").append('<div id="atendente" class="atendente"></div>');
		}
	}, 1000);

	//move('.pessoa').add('margin-left', 50).end();
}
function atualiza_evento(item) {
	$("#evento").html(item.evento.title_html);
	$("#relogio").html(round(item.tempo));
	//move('.pessoa').add('margin-left', 50).end();
}

function round(num) {
	var dec = 5;
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return result;
}


function atualiza_fila_eventos(eventos) {
	if(eventos.length > 0) {
		$("#evento0").html(round(eventos[0].tempo) + " .:. " + eventos[0].evento.title_html);
	} else {
		$("#evento0").html("");
	}

	if(eventos.length > 1) {
		$("#evento1").html(round(eventos[1].tempo) + " .:. " + eventos[1].evento.title_html);
	} else {
		$("#evento1").html("");
	}

}
